const assert = require('assert')
const Taobao = require('../utils/TaoBao')

function add(a, b) {
    return a + b
}

/**
 * @desc describe 是全局的入口函数 整个函数使用回调嵌套写法
 *
 * 1.done   在非it函数调用时 若一个使用了 done 则全部函数都要使用 否则无法进入下一步 （迭代器规则），在it中形参声明了 done  就必须要调用 同理
 *
 * 2. 像before beforeEach after afterEach 这类周期函数 有区别  ； before 只在启动时调用一次 each 会在每次测试执行前后调用
 *
 * 3. 延时与异步  这类函数需要使用done否则不生效
 *
 * 4.不要使用箭头函数，会有作用域穿透风险
 *
 *
 */

describe('测试淘宝类', function () {

    this.timeout(3000); // A very long environment setup. 设置超时时间的 如果超过这个数字就测试i失败了

    before(function (done) {
        //     这个在当前作用域只会执行一次，与each有区别
        console.log("先执行一次时间间隔函数");
        Taobao.timeCheck.do()


        console.time('全局的延时')


        setTimeout(done, 2900)
    })
    it('should 生效间隔检查函数', (done) => {

        console.timeEnd('全局的延时')
        let flag = Taobao.timeCheck.do(2000)
        assert.equal(flag, true, '校验限制是2秒 因为倒计时五秒 应该为true')

        done()

    });
    it('测试淘宝请求时间间隔检查函数', (done) => {
        assert.equal(Taobao.timeCheck.do(), false, '默认间隔是120秒 第二次执行 因为不够间隔时间应该返回false')
        done()
    });
    it('should 测试淘宝搜索', (done) => {
        done()
    });

});




